home *** CD-ROM | disk | FTP | other *** search
- 316 BGI=BG:FGI=FG:IFLAG=0:BFLAG=0:ESC=0:C$=""
- 330 FOR I=1 TO 7:READ A$:LOCATE ,39:PRINT VL$;A$;SPACE$(38-LEN(A$));VL$:NEXT
- 365 DATA" Color/Music/Windows
- 636 IF IB THEN 13030
- 637 X = LEN(A$):P=INSTR(A$,LF$):IF P=0 THEN 638 ELSE A$=LEFT$(A$,P-1)+RIGHT$(A$,X-P):GOTO 637
- 638 FOR I = 1 TO X:Z$=MID$(A$,I,1)
- 639 IF (Z$=CHR$(127)) THEN 655
- 640 IF ASC(Z$) = 27 THEN ESC=1
- 641 IF Z$=BS$ THEN GOSUB 2650:GOTO 655
- 645 IF ESC=1 THEN C$=C$+Z$ ELSE GOTO 650
- 646 FF = INSTR("fmJ"+CHR$(14)+CHR$(93)+CHR$(124)+CHR$(91),Z$)
- 647 IF FF=0 THEN GOTO 655 ELSE GOSUB 12000:ESC=0:C$="":GOTO 655
- 650 PRINT Z$;
- 655 NEXT I
- 1517 IF IB AND EX=72 THEN B$=CHR$(30):GOTO 535
- 1518 IF IB AND EX=71 THEN B$=CHR$(11):GOTO 535
- 1519 IF IB AND EX=80 THEN B$=CHR$(31):GOTO 535
- 1684 IF EX=24 THEN 13000
- 2100 DATA" Alt-L Chg Def Drv Alt-M Messages
- 2105 DATA" Alt-O IBM 3101 Alt-P Com Parms
- 11999 '
- 12000 ' ***** IBM 3101 EMULATION PLUS COLORS, MUSIC & WINDOWS FOR RBBS *****
- 12001 '
- 12002 ' -- Escape Control
- 12010 CLEN=LEN(C$)
- 12020 CEND$=MID$(C$,CLEN,1)
- 12025 IF CLEN<>2 THEN 12030
- 12027 IF ASC(CEND$)<>91 THEN RETURN 'INVALID ESC SEQ
- 12030 ON FF GOTO 12300,12070,12070,12400,12500,12600,12700
- 12050 RETURN
- 12059 '
- 12060 ' -- Color Control
- 12070 FOR J=1 TO INT(CLEN/3):Z = VAL(MID$(C$,(3*J),2))
- 12080 IF Z = 30 THEN FG = 0: GOTO 12290 'BLACK
- 12090 IF Z = 31 THEN FG = 4: GOTO 12290 'RED
- 12100 IF Z = 32 THEN FG = 2: GOTO 12290 'GREEN
- 12110 IF Z = 33 THEN FG = 6: GOTO 12290 'BROWN
- 12120 IF Z = 34 THEN FG = 1: GOTO 12290 'BLUE
- 12130 IF Z = 35 THEN FG = 5: GOTO 12290 'MAGENTA
- 12140 IF Z = 36 THEN FG = 3: GOTO 12290 'CYAN
- 12150 IF Z = 37 THEN FG = 7: GOTO 12290 'WHITE
- 12160 IF Z = 40 THEN BG = 0: GOTO 12290 'BLACK
- 12170 IF Z = 41 THEN BG = 4: GOTO 12290 'RED
- 12180 IF Z = 42 THEN BG = 2: GOTO 12290 'GREEN
- 12190 IF Z = 43 THEN BG = 6: GOTO 12290 'BROWN
- 12200 IF Z = 44 THEN BG = 1: GOTO 12290 'BLUE
- 12210 IF Z = 45 THEN BG = 5: GOTO 12290 'MAGENTA
- 12220 IF Z = 46 THEN BG = 3: GOTO 12290 'CYAN
- 12230 IF Z = 47 THEN BG = 7: GOTO 12290 'WHITE
- 12240 IF Z = 0 THEN BG = BGI: FG = FGI:IFLAG = 0:BFLAG=0: GOTO 12290
- 12250 IF Z = 2 THEN CLS : LOCATE 1,1:GOTO 12290 'CLEAR
- 12260 IF Z = 1 THEN IFLAG = 8:GOTO 12290 'INTENSITY HIGH
- 12270 IF Z = 5 THEN BFLAG = 16:GOTO 12290 'BLINK
- 12280 '
- 12290 NEXT J:FFG=FG+IFLAG+BFLAG:COLOR FFG,BG:RETURN
- 12299 '
- 12300 ' -- Cursor Position
- 12320 PROW=VAL(MID$(C$,CLEN-5,2))
- 12330 PCOL=VAL(MID$(C$,CLEN-2,2))
- 12340 LOCATE PROW,PCOL
- 12350 RETURN
- 12399 '
- 12400 ' -- Music Control
- 12420 PLAY MID$(C$,3,(CLEN-3))
- 12430 RETURN
- 12499 '
- 12500 ' -- Screen Control
- 12520 MODE=VAL(MID$(C$,CLEN-11,2))
- 12530 BURST=VAL(MID$(C$,CLEN-8,2))
- 12540 APAGE=VAL(MID$(C$,CLEN-5,2))
- 12550 VPAGE=VAL(MID$(C$,CLEN-2,2))
- 12560 SCREEN MODE,BURST,APAGE,VPAGE
- 12570 RETURN
- 12599 '
- 12600 ' -- String Input
- 12620 INPUT I$:PRINT #1,I$
- 12630 RETURN
- 12699 '
- 12700 ' -- Escape Sequency Verify
- 12720 RETURN 655
- 13000 IF IB THEN IB=0:PRINT"===I.B.M. 3101 Operation Off":BEEP:GOTO 515
- 13015 IB=-1:BEEP:PRINT"===I.B.M. 3101 Operation On":GOTO 515
- 13030 FOR I = 1 TO LEN(A$):C$=MID$(A$,I,1)
- 13035 ON ESCSEQ GOTO 13145,13170,13180
- 13040 IF C$<" " THEN 13070
- 13045 PRINT C$;:COL=COL+1:IF COL>80 THEN COL=1:ROW=ROW+1:IF ROW>24 THEN ROW=24
- 13050 GOTO 13355
- 13055 '
- 13060 ' -- 3101 Control Character Encountered
- 13070 C=ASC(C$)
- 13075 IF C=13 THEN COL=1:GOTO 13350
- 13080 IF C=30 AND ROW>1 THEN ROW=ROW-1:GOTO 13350
- 13085 IF C=22 THEN C=10:C$=CHR$(C)
- 13090 IF C=10 AND ROW<24 THEN ROW=ROW+1:GOTO 13350
- 13095 IF C=10 THEN PRINT C$;:GOTO 13355
- 13100 IF C=8 AND COL>1 THEN COL=COL-1:GOTO 13350
- 13105 IF C=28 AND COL<80 THEN COL=COL+1:GOTO 13350
- 13110 IF C=30 THEN ROW=1:COL=1:GOTO 13350
- 13115 IF C=12 THEN ROW=1:COL=1:CLS:GOTO 13350
- 13120 IF C<>27 THEN 13355
- 13125 '
- 13130 ' -- ESC Sequence; Read Next Character & Come Back
- 13140 ESCSEQ=1:GOTO 13355
- 13145 ESCSEQ=0:IF C$<>"Y" THEN 13205
- 13150 '
- 13155 ' -- Repositioning Cursor; Now Get Row & Column Bytes
- 13165 ESCSEQ=2:GOTO 13355
- 13170 ROW=ASC(C$)-31:IF ROW<1 OR ROW>24 THEN ROW=1
- 13175 ESCSEQ=3:GOTO 13355
- 13180 COL=ASC(C$)-31:IF COL<1 OR COL>80 THEN COL=1
- 13185 ESCSEQ=0:GOTO 13350
- 13190 '
- 13195 ' -- Handle Cursor Up
- 13205 IF C$<>"A" THEN 13235
- 13210 IF ROW >1 THEN ROW=ROW-1
- 13215 GOTO 13350
- 13220 '
- 13225 ' Handle cursor down
- 13230 '
- 13235 IF C$<>"B" THEN 13270
- 13240 IF ROW <24 THEN ROW=ROW+1
- 13245 GOTO 13350
- 13250 '
- 13255 ' -- Handle Cursor Right
- 13270 IF C$<>"C" THEN 13300
- 13275 COL=COL+1:IF COL >80 THEN COL=1:IF ROW > 23 THEN ROW=24 ELSE ROW=ROW+1
- 13280 GOTO 13350
- 13285 '
- 13290 ' -- Handle Cursor Left
- 13300 IF C$<>"D" THEN 13330
- 13305 COL=COL-1:IF COL <1 THEN COL=80:IF ROW > 1 THEN ROW=ROW-1 ELSE ROW=1
- 13310 GOTO 13350
- 13315 '
- 13320 ' -- Handle Erase to End of Page
- 13330 IF C$<>"J" THEN 13355
- 13335 IF ROW<24 THEN PRINT SPACE$(81-COL);
- 13340 IF ROW<23 THEN FOR TROW=ROW+1 TO 23:PRINT SPACE$(80);:NEXT TROW
- 13345 IF ROW<24 THEN PRINT SPACE$(79); ELSE PRINT SPACE$(80-COL);
- 13350 LOCATE ROW,COL,1
- 13355 NEXT
- 13360 GOTO 515